<?php
namespace Back\Model;
use Think\Model;
class GoodsModel extends Model{
//开启批量验证

protected $patchValidate=true;

//自动验证
protected $_validate=[
    //自己写规则
    ['sku_id','checkSkuId','选择合理的库存单位',self::EXISTS_VALIDATE,'callback'],
];
//填充
protected $_auto=[
    //自己写填充规则

    //模型方法
    ['upc','mkUpc',self::MODEL_INSERT,'callback'],

    //默认未删除
    ['delete','0',self::MODEL_INSERT],

    //默认起售日期就是当前
    ['date_available','mkDateAvailable',self::MODEL_INSERT ,'callback'],

    //描述中处理掉script 部分
    ['description','mkDescription',self::MODEL_BOTH,'callback'],
    //仅仅需要在插入维护
    ['created_at','time',self::MODEL_INSERT,'function'],
    //更新时间，插入和更新是都需要更新
    ['updated_at','time',self::MODEL_BOTH,'function'],
];

protected  function  mkUpc($upc ='')
{
    //用户是否手动填写upc
    if($upc !==''){
        return $upc;
    }

    //没有手动，自动生成
    return date('YmdHis').mt_rand(1000,9999) .mt_rand(1000,9999);
}

protected  function  mkDateAvailable($value=''){
    if($value !==''){
        return $value;
    }

    return date('Y-m-d');
}

protected  function  mkDescription($value){
    //匹配script标记的内容，*？非贪婪模式，/is ,忽略大小写+单行模式(万能点)
    $pattern ='/<script.*?>.*?<\/script>/is';

    $result =preg_replace_callback($pattern,function ($match){
        //$match查找的匹配字符串
        //计算新的替换字符串，进行替换
        return htmlspecialchars($match[0]);
    },$value);
    return $result;
}
public  function checkSkuId($value){
    //检测value是否在sku表中
    return (bool) M('Sku')->find($value);
}
}

